// Util.hpp
#pragma once
#include <iostream>
#include <string>
#include <vector>
using namespace std;
class Util
{
public:
    // 反序列化时使用，将左右操作数和运算符分割出来
    //10 + 20
    static bool StringSplit(const string &payload, const string &sep, vector<string> &v)
    {
        size_t start = 0;
        while (start < payload.size())
        {
            //寻找sep的位置
            size_t pos = payload.find(sep, start);
            if (pos == string::npos)
            {
                break;
            }
            // 将找到的各个部分放入vector中
            v.push_back(payload.substr(start, pos - start));
            start = pos + sep.size(); // 跳过刚刚遇到的sep，继续往后找
        }
        //右操作数后面没有sep了，这是处理右操作数的
        if (start<payload.size())
        {
            v.push_back(payload.substr(start));
        }
        return true;
    }
};